
\begin{itemize}
\item 
模板允许将函数、函数指针、函数对象、函子和Lambda作为可调用对象传递。

\item 
使用重载operator()定义类时，将其声明为const(除非调用改变了状态)。

\item 
使用std::invoke()，可以处理所有可调用对象的代码，包括成员函数。

\item 
使用decltype(auto)来完美地转发返回值。

\item 
类型特征是检查类型属性和功能性函数。

\item 
当需要模板中对象的地址时，可以使用std::addressof()。

\item 
使用std::declval()在未计算的表达式中创建特定类型的值。

\item 
如果对象的类型不依赖于模板参数，可以使用auto\&\&在泛型代码中完美转发。

\item 
准备好处理模板参数作为引用的副作用。

\item 
可以使用模板来推迟对表达式的求值(例如，支持在类模板中使用不完整类型)。
\end{itemize}